The simultaneous execution of multiple threads in a hyper-threading system creates various security problems. One class of security problems involved what has been termed a “covert timing channel attack.” In a covert timing channel attack, a first thread may be executing instructions for a first user, e.g., an encryption program, while a second malicious thread is executing instructions for a second user, seeking to obtain information from the first thread, such as cryptographic keys, by monitoring the execution of the first thread and accesses to the cache for the first thread.
In addition to security problems, another type of problem exists in hyper-threading systems. This problem, referred to herein as contending for the same cache set, is caused when several portions of memory map to the same cache set. Specifically, a hot spot in a memory block is a set of memory locations in the block that are frequently accessed. When multiple hot spots in memory blocks map to, or line up to, the same cache set, multiple threads end up contending for entries in the same cache set.